home *** CD-ROM | disk | FTP | other *** search
/ ETO Development Tools 4 / ETO Development Tools 4.iso / Essentials / MacApp Documentation / MacApp.TECH$ Archives / 1990 / Oct 90 / MacApp.Tech$ 10⁄5⁄90 / 2080-CTB and MacApp-Sep90 < prev    next >
Encoding:
Text File  |  1991-03-06  |  3.9 KB  |  140 lines  |  [TEXT/GEOL]

  1. Item forwarded  by  LOOMIS       to COWSAR1      REKIETA1
  2.  
  3. Item    0862049                         30-Sept-90        17:50PDT
  4.  
  5. From:   D0130                           Interactive Tele, Thomas Myers,PRT
  6.  
  7. To:     MACAPP.TECH$                    MacApp Technical
  8.  
  9. Sub:    CTB and MacApp
  10.  
  11. Help!
  12. No matter what I do, I can't seem to get macApp and the CommToolbox Terminal
  13. windows to cooperate.  Problem is that as I type my text and it leaves the
  14. window area it should scroll.  (It did in my non-macApp version.  It properly
  15. wraps at the right side of my view.)  I don't currently support any scroll bars
  16. 'cause I wasn't planning on supporting any cache region to scroll into.
  17.  
  18. I have a normal MacApp window (TWindow) with a view for my terminal portion of
  19. the window (TTerminalView).
  20.  
  21. It appears that terminal windows think that they always have 24 lines of data.
  22. So even if I have a small view rect, no scrolling occurs before 24 lines
  23. happen.  The same think happens with the 80/132 column selections.
  24.  
  25. Am I missing something?  Is there some way that the TM manager would tell me to
  26. force a scroll?   I am assuming that the cache proc only works AFTER a scroll
  27. has taken place.  This magic number of 24 remains the same no matter what I set
  28. the term & view rects with TMNew.  I also tried to use TMResize to set it to a
  29. smaller area.   Both techniques do allow me to change the DISPLAYED data area
  30. so it is smaller, but the window still scrolls only after 24 lines
  31.  
  32.  
  33. Here is my init and draw methods...
  34.  
  35.  
  36. pascal void TCTBDocument::AllocateCTBData(void)
  37. {
  38.  
  39.    /*
  40.    Allocate comm link connection, file transfer records - because these
  41.    depend on our window, we call this routine from DoMakeViews after we've
  42.    allocated our window.
  43.    */
  44.    CMBufferSizes   cmSizes;
  45.    short   procID;
  46.    short   result;
  47.    CMRecFlags  theCMFlags = 0;
  48.  
  49.    Lock(true); // We pass fxxxName to CTB
  50.  
  51.    TRY {
  52.    cmSizes[cmDataIn] = kDataBufSize;
  53.    cmSizes[cmDataOut] = kDataBufSize;
  54.    cmSizes[cmCntlIn] = 0;
  55.    cmSizes[cmCntlOut] = 0;
  56.    cmSizes[cmAttnIn] = 0;
  57.    cmSizes[cmAttnOut] = 0;
  58.  
  59.  
  60.    {
  61.    RecttermRect, viewRect;
  62.    TMFlags flags;
  63.    VRect   frameRect;
  64.  
  65.    procID = TMGetProcID(fTerminalName);
  66.    if (procID IS -1) {
  67.    ShowDebugStr("\pNo TM procID for supplied TM tool name");
  68.    FailOSErr(paramErr);
  69.    }
  70.  
  71.    gApplication->InvalidateFocus();//••
  72.    fCommWindow->Focus();   // Focus on window
  73.  
  74.    fTerminalView->GetFrame( &frameRect);
  75.    SetRect(&termRect,  (short) frameRect.left, (short) frameRect.top,
  76.    (short) frameRect.right, (short) frameRect.bottom);
  77.    viewRect = termRect;
  78.    flags = tmAutoScroll;
  79.    fTerminal = TMNew(&termRect, &viewRect, flags, procID,
  80.         fCommWindow->fWMgrWindow,
  81.    (ProcPtr)pTMSendProc,
  82.    (ProcPtr)nil,   /* Cache Proc */
  83.    (ProcPtr)pTMBreakProc,
  84.    (ProcPtr)nil,   /* ClikLoop */
  85.    (ProcPtr)pTMEnvironsProc, (long)this, nil);
  86.    FailNIL( fTerminal);
  87.  
  88.    if (fTerminalData != nil) {
  89.    result = TMSetConfig( fTerminal, fTerminalData);
  90.    DisposPtr( fTerminalData);
  91.    fTerminalData = nil;
  92.    if ( result IS -1) {
  93.    ShowDebugStr( "\pTMSetConfig failed");
  94.    FailOSErr( paramErr);
  95.    }
  96.    }
  97.    }
  98.    }
  99.    RECOVER {
  100.    Lock(false);
  101.    }
  102.    ENDTRY
  103.  
  104.    Lock(false);
  105. }
  106.  
  107. pascal void TTerminalView::Draw(Rect * /* area */)
  108. {
  109.  
  110.    TCTBDocument *myDocument;
  111.    RgnHandle   savedClip;
  112.    VRect   frameRect;
  113.    RecttermRect;
  114.  
  115.    myDocument = (TCTBDocument *)fDocument;
  116.  
  117.    GetFocus(&gTempFocusRec);
  118.    GetWindow()->Focus();
  119.  
  120.    // Get the terminal views frame!
  121.    GetFrame( &frameRect);
  122.    SetRect(&termRect,  (short) frameRect.left, (short) frameRect.top,
  123.    (short) frameRect.right, (short) frameRect.bottom);
  124.  
  125.  
  126.    // Clip to the window content
  127.    savedClip = NewRgn();
  128.    GetClip( savedClip);
  129.    ClipRect (&termRect);
  130.  
  131.    TMUpdate(myDocument->fTerminal, myDocument->fCommWindow->fWMgrWindow->visRgn);
  132.  
  133.    SetClip( savedClip);
  134.    DisposeRgn( savedClip);
  135.  
  136.    SetFocus( &gTempFocusRec);
  137. }
  138. 
  139.  
  140.